function extractTargetFromEdges(fig)
    % 获取数据
    data = guidata(fig);
    edges = data.img;  % 假设图像已经经过边缘检测
    
    if isempty(edges)
        uialert(fig, '请先进行边缘检测！', '错误');
        return;
    end
    
    % 使用形态学操作（膨胀）填补目标区域的空隙
    se = strel('disk', 5);  % 创建一个半径为5的圆形结构元素
    dilatedEdges = imdilate(edges, se);  % 对边缘图像进行膨胀
    
    % 使用连通组件分析提取目标区域
    cc = bwconncomp(dilatedEdges);  % 找到连通区域
    
    % 如果找到了连通区域，就提取其中最大的区域作为目标
    if ~isempty(cc.PixelIdxList)
        % 计算每个连通区域的面积
        regionAreas = cellfun(@numel, cc.PixelIdxList);
        
        % 找到最大面积区域的索引
        [~, largestRegionIdx] = max(regionAreas);
        
        % 获取最大的连通区域的像素索引
        targetRegion = false(size(edges));  % 初始化目标区域
        targetRegion(cc.PixelIdxList{largestRegionIdx}) = true;  % 标记最大区域为目标
        
        % 显示提取的目标区域
        imshow(targetRegion, 'Parent', data.ax);
        
        % 提取目标区域的特征（LBP 和 HOG）
        % 原始图像部分已经从目标区域中提取出来
        originalImg = data.img;  % 这里你可以使用原始图像或其他处理后的图像
        
        % 提取目标区域的特征
        targetLBP = extractLBPFeatures(originalImg);  % 提取LBP特征
        targetHOG = extractHOGFeatures(originalImg);  % 提取HOG特征
        
        % 显示提取的特征结果（如特征的长度）
        disp('提取目标图像 LBP 特征向量长度:');
        disp(length(targetLBP));
        
        disp('提取目标图像 HOG 特征向量长度:');
        disp(length(targetHOG));
        
        % 可以将特征保存在结构体中，以供后续使用
        data.features.targetLBP = targetLBP;
        data.features.targetHOG = targetHOG;
        
        % 更新数据
        guidata(fig, data);
    else
        uialert(fig, '未找到目标区域！', '错误');
    end
end
